package cn.iocoder.yudao.module.crossborder.order.controller.admin.ordercustomer.vo;

import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 跨境电商客户信息 Response VO")
@Data
@ExcelIgnoreUnannotated
public class OrderCustomerRespVO {

    @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31305")
    @ExcelProperty("客户编号")
    private Long id;

    @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("客户编号")
    private String customerNo;

    @Schema(description = "平台客户ID", example = "9041")
    @ExcelProperty("平台客户ID")
    private String platformCustomerId;

    @Schema(description = "邮箱", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("邮箱")
    private String email;

    @Schema(description = "手机号")
    @ExcelProperty("手机号")
    private String phone;

    @Schema(description = "名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @ExcelProperty("名")
    private String firstName;

    @Schema(description = "姓", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @ExcelProperty("姓")
    private String lastName;

    @Schema(description = "全名", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    @ExcelProperty("全名")
    private String fullName;

    @Schema(description = "昵称", example = "张三")
    @ExcelProperty("昵称")
    private String nickname;

    @Schema(description = "头像")
    @ExcelProperty("头像")
    private String avatar;

    @Schema(description = "性别（1男 2女 3未知）")
    @ExcelProperty("性别（1男 2女 3未知）")
    private Integer gender;

    @Schema(description = "生日")
    @ExcelProperty("生日")
    private LocalDate birthday;

    @Schema(description = "年龄")
    @ExcelProperty("年龄")
    private Integer age;

    @Schema(description = "语言代码")
    @ExcelProperty("语言代码")
    private String languageCode;

    @Schema(description = "货币代码")
    @ExcelProperty("货币代码")
    private String currencyCode;

    @Schema(description = "时区")
    @ExcelProperty("时区")
    private String timezone;

    @Schema(description = "客户类型（1个人 2企业）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("客户类型（1个人 2企业）")
    private Integer customerType;

    @Schema(description = "客户等级（1普通 2银牌 3金牌 4钻石 5VIP）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("客户等级（1普通 2银牌 3金牌 4钻石 5VIP）")
    private Integer customerLevel;

    @Schema(description = "公司名称", example = "李四")
    @ExcelProperty("公司名称")
    private String companyName;

    @Schema(description = "税号")
    @ExcelProperty("税号")
    private String taxNumber;

    @Schema(description = "营业执照号")
    @ExcelProperty("营业执照号")
    private String businessLicense;

    @Schema(description = "注册来源")
    @ExcelProperty("注册来源")
    private String registrationSource;

    @Schema(description = "注册IP")
    @ExcelProperty("注册IP")
    private String registrationIp;

    @Schema(description = "注册时间")
    @ExcelProperty("注册时间")
    private LocalDateTime registrationTime;

    @Schema(description = "最后登录时间")
    @ExcelProperty("最后登录时间")
    private LocalDateTime lastLoginTime;

    @Schema(description = "最后登录IP")
    @ExcelProperty("最后登录IP")
    private String lastLoginIp;

    @Schema(description = "总订单数", requiredMode = Schema.RequiredMode.REQUIRED, example = "17963")
    @ExcelProperty("总订单数")
    private Integer totalOrderCount;

    @Schema(description = "总订单金额", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("总订单金额")
    private BigDecimal totalOrderAmount;

    @Schema(description = "总支付金额", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("总支付金额")
    private BigDecimal totalPaidAmount;

    @Schema(description = "平均订单金额", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("平均订单金额")
    private BigDecimal avgOrderAmount;

    @Schema(description = "最后下单时间")
    @ExcelProperty("最后下单时间")
    private LocalDateTime lastOrderTime;

    @Schema(description = "信用额度", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("信用额度")
    private BigDecimal creditLimit;

    @Schema(description = "已用信用额度", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("已用信用额度")
    private BigDecimal creditUsed;

    @Schema(description = "积分余额", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("积分余额")
    private Integer pointsBalance;

    @Schema(description = "累计积分", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("累计积分")
    private Integer pointsTotal;

    @Schema(description = "状态（0正常 1冻结 2黑名单）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("状态（0正常 1冻结 2黑名单）")
    private Integer status;

    @Schema(description = "邮箱是否验证", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("邮箱是否验证")
    private Boolean emailVerified;

    @Schema(description = "手机是否验证", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("手机是否验证")
    private Boolean phoneVerified;

    @Schema(description = "KYC状态（0未认证 1认证中 2已认证 3认证失败）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("KYC状态（0未认证 1认证中 2已认证 3认证失败）")
    private Integer kycStatus;

    @Schema(description = "风险等级（1低 2中 3高）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("风险等级（1低 2中 3高）")
    private Integer riskLevel;

    @Schema(description = "客户标签，逗号分隔")
    @ExcelProperty("客户标签，逗号分隔")
    private String tags;

    @Schema(description = "备注", example = "你说的对")
    @ExcelProperty("备注")
    private String remark;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

}
